package q1417_reformat;

public class Solution {
    /*
    最简单的想法是分别用两个字符串分别存储字母和数字 然后比较是否长度差大于1 如果不大于1 就交替的插入到ans字符串中
    但是为了减少空间复杂和时间复杂
    可以用两个指针 i j 来进行插入 首先判断长度差 如果没有问题 则遍历s字符串
    如果是字母 则插入i指针 然后指针加2 否则就是j指针
    这样能够遍历的同时得到答案
    注意开始插入时 如果字母和数字长度不等 则应该先移动一个指针
     */
    public String reformat(String s) {
        char[] chars = s.toCharArray();
        int count1 = 0, count2 = 0;
        for (char c : chars) {
            if (c >= '0' && c <= '9') ++count1;
            else ++count2;
        }
        if (Math.abs(count1 - count2) > 1) return "";
        int i = 0, j = 0;

        if (count1 > count2) ++i;
        else ++j;

        char[] ans = new char[chars.length];
        for (char c : chars) {
            if (Character.isDigit(c)) {
                ans[j] = c;
                j += 2;
            } else {
                ans[i] = c;
                i += 2;
            }
        }
        return new String(ans);

    }
}
